/**
 * Created with IntelliJ IDEA.
 *
 * @author: cxs
 * @date: 2023/6/29
 * @time: 10:56
 * @className：FileController
 * @description：文件下载控制器
 */
package com.bailan.bus.controller;

import com.bailan.common.util.AppFileUtils;
import com.bailan.common.util.DataGridView;
import com.bailan.common.util.RandomUtils;
import com.bailan.common.util.SysConstant;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@RequestMapping("file")
@RestController
public class FileController {
    /**
     * 不下载只显示
     * file/downloadShowFile.action
     */
    @RequestMapping("downloadShowFile")
    public ResponseEntity<Object> downloadShowFile(String path, HttpServletResponse response) {
        return AppFileUtils.downloadFile(response, path, "");
    }


    /**
     * 查看大图
     * /file/downloadFile.action
     */
    @RequestMapping("downloadFile")
    public ResponseEntity<Object> downloadFile(String path, HttpServletResponse response) {
        String oldName="";
        return AppFileUtils.downloadFile(response, path, oldName);
    }

    /**
     * 上传图片
     * /file/uploadFile.action
     */


    @RequestMapping("uploadFile")
    public DataGridView uploadFile(MultipartFile mf) throws IOException {
        //获取文件上传的父路径
        String parentPath=AppFileUtils.PATH;
        //使用日期作为文件夹的名称
        String dirName= RandomUtils.getCurrentDateForString();
        File dirFile=new File(parentPath,dirName);
        /**
         * 文件夹不存在则创建文件夹
         */
        if (!dirFile.exists()){
            dirFile.mkdirs();
        }
        String oldName=mf.getOriginalFilename(); //获取文件原名
        String newName=RandomUtils.createFileNameUseTime(oldName, SysConstant.FILE_UPLOAD_TEMP);
        File dest=new File(dirFile,newName);
        /**
         * transferTo()方法，
         * 是springmvc封装的方法，
         * 用于图片上传时，把内存中图片写入磁盘
         */
        mf.transferTo(dest);
        Map<String,Object> map=new HashMap<>();     //用来保存一个图片的的相对路径，将来保存到数据库中
        map.put("src",dirName+"/"+newName);     //将map放到DataGridView对象中，将DataGridView返回
        return  new DataGridView(map);
    }

}
